A computer network typically comprises a plurality of interconnected nodes. A node may include end user devices, switches, servers, or other devices that transmit or receive data. Switches may include routers, bridges and other types of switches. Switches are used to efficiently transmit data in the network. Switches are in general network devices which segregate information flows over various segments of a computer network. A segment is any subset of the network computing environment including devices and their respective interconnecting communication links.
A common type of computer network is a local area network (LAN) which typically refers to a privately owned network within a single building or campus. LANs typically employ a data communication protocol, such as Ethernet, FDDI or token ring, defining the functions performed by the data link and physical layers, which are layer 1 and layer 2 in the Open Systems Interconnection (OSI) model. Multiple LANs may be connected to form a wide area network (WAN). Also, LANs may be connected to the Internet.
Most computer networks, including LANs, are either partially or fully meshed. That is, they include redundant communications paths so that a failure of any given link or node does not isolate any portion of the network. The existence of redundant links, however, may cause the formation of “loops” within the network. Loops are highly undesirable because data may traverse the loops indefinitely. Furthermore, because switches may flood, broadcast, or multicast packets, the existence of loops may cause a proliferation of data so large that the network becomes overwhelmed.
To avoid the formation of loops, most switches execute a spanning tree protocol which allows them to calculate an active network topology that is loop-free (i.e., a tree) and yet connects every node with the LAN (i.e., the tree is spanning). The Institute of Electrical and Electronics Engineers (IEEE) has promulgated the 802.1D standard that defines a spanning tree protocol to be executed by 802.1D compatible devices.
The standard spanning protocol is a naive mechanism for generating a network topology for data transmission. The spanning tree protocol is not sensitive to changing traffic in the system or types of data being transmitted. For example, if links in the tree experience heavy traffic, application data being transmitted on those links may suffer, such as experiencing high latency and high packet loss. Quality of service (QoS) sensitive applications, such as streaming video, video conferencing, voice over Internet protocol (VoIP), and graphic-intensive multiplayer games, may suffer severe degradation in quality that is unacceptable to users. Furthermore, in large networks, it may not be feasible or cost effective for one or more system administrators to monitor the network and make decisions on assigning different paths to different information flows.